package com.ruoyi.drone.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 任务发布对象 drone_task
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public class DroneTask extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 任务ID */
    private Long taskId;

    /** 任务编号 */
    @Excel(name = "任务编号")
    private String taskNo;

    /** 发布组织ID（关联drone_organization） */
    @Excel(name = "发布组织ID")
    private Long orgId;

    /** 任务分类ID（关联drone_task_category） */
    @Excel(name = "任务分类ID")
    private Long categoryId;

    /** 任务标题 */
    @Excel(name = "任务标题")
    private String taskTitle;

    /** 任务描述 */
    @Excel(name = "任务描述")
    private String taskDescription;

    /** 任务要求 */
    @Excel(name = "任务要求")
    private String taskRequirements;

    /** 任务地点 */
    @Excel(name = "任务地点")
    private String location;

    /** 联系电话 */
    @Excel(name = "联系电话")
    private String contactPhone;

    /** 纬度 */
    @Excel(name = "纬度")
    private BigDecimal latitude;

    /** 经度 */
    @Excel(name = "经度")
    private BigDecimal longitude;

    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /** 结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /** 最低预算 */
    @Excel(name = "最低预算")
    private BigDecimal budgetMin;

    /** 最高预算 */
    @Excel(name = "最高预算")
    private BigDecimal budgetMax;

    /** 所需技能 */
    @Excel(name = "所需技能")
    private String requiredSkills;

    /** 所需证书 */
    @Excel(name = "所需证书")
    private String requiredCerts;

    /** 最大飞手数量 */
    @Excel(name = "最大飞手数量")
    private Integer maxPilots;

    /** 任务图片（JSON格式） */
    @Excel(name = "任务图片")
    private String taskImages;

    /** 状态（0待审核 1已发布 2进行中 3已完成 4已取消 5已拒绝） */
    @Excel(name = "状态", readConverterExp = "0=待审核,1=已发布,2=进行中,3=已完成,4=已取消,5=已拒绝")
    private String status;

    /** 审核原因 */
    @Excel(name = "审核原因")
    private String auditReason;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date auditTime;

    /** 审核人 */
    @Excel(name = "审核人")
    private String auditBy;

    /** 发布时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "发布时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date publishTime;

    /** 完成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date completeTime;

    public void setTaskId(Long taskId) 
    {
        this.taskId = taskId;
    }

    public Long getTaskId() 
    {
        return taskId;
    }
    public void setTaskNo(String taskNo) 
    {
        this.taskNo = taskNo;
    }

    public String getTaskNo() 
    {
        return taskNo;
    }
    public void setOrgId(Long orgId) 
    {
        this.orgId = orgId;
    }

    public Long getOrgId() 
    {
        return orgId;
    }
    public void setCategoryId(Long categoryId) 
    {
        this.categoryId = categoryId;
    }

    public Long getCategoryId() 
    {
        return categoryId;
    }
    public void setTaskTitle(String taskTitle) 
    {
        this.taskTitle = taskTitle;
    }

    public String getTaskTitle() 
    {
        return taskTitle;
    }
    public void setTaskDescription(String taskDescription) 
    {
        this.taskDescription = taskDescription;
    }

    public String getTaskDescription() 
    {
        return taskDescription;
    }
    public void setTaskRequirements(String taskRequirements) 
    {
        this.taskRequirements = taskRequirements;
    }

    public String getTaskRequirements() 
    {
        return taskRequirements;
    }
    public void setLocation(String location) 
    {
        this.location = location;
    }

    public String getLocation() 
    {
        return location;
    }
    public void setContactPhone(String contactPhone) 
    {
        this.contactPhone = contactPhone;
    }

    public String getContactPhone() 
    {
        return contactPhone;
    }
    public void setLatitude(BigDecimal latitude) 
    {
        this.latitude = latitude;
    }

    public BigDecimal getLatitude() 
    {
        return latitude;
    }
    public void setLongitude(BigDecimal longitude) 
    {
        this.longitude = longitude;
    }

    public BigDecimal getLongitude() 
    {
        return longitude;
    }
    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }
    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }
    public void setBudgetMin(BigDecimal budgetMin) 
    {
        this.budgetMin = budgetMin;
    }

    public BigDecimal getBudgetMin() 
    {
        return budgetMin;
    }
    public void setBudgetMax(BigDecimal budgetMax) 
    {
        this.budgetMax = budgetMax;
    }

    public BigDecimal getBudgetMax() 
    {
        return budgetMax;
    }
    public void setRequiredSkills(String requiredSkills) 
    {
        this.requiredSkills = requiredSkills;
    }

    public String getRequiredSkills() 
    {
        return requiredSkills;
    }
    public void setRequiredCerts(String requiredCerts) 
    {
        this.requiredCerts = requiredCerts;
    }

    public String getRequiredCerts() 
    {
        return requiredCerts;
    }
    public void setMaxPilots(Integer maxPilots) 
    {
        this.maxPilots = maxPilots;
    }

    public Integer getMaxPilots() 
    {
        return maxPilots;
    }
    public void setTaskImages(String taskImages) 
    {
        this.taskImages = taskImages;
    }

    public String getTaskImages() 
    {
        return taskImages;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }
    public void setAuditReason(String auditReason) 
    {
        this.auditReason = auditReason;
    }

    public String getAuditReason() 
    {
        return auditReason;
    }
    public void setAuditTime(Date auditTime) 
    {
        this.auditTime = auditTime;
    }

    public Date getAuditTime() 
    {
        return auditTime;
    }
    public void setAuditBy(String auditBy) 
    {
        this.auditBy = auditBy;
    }

    public String getAuditBy() 
    {
        return auditBy;
    }
    public void setPublishTime(Date publishTime) 
    {
        this.publishTime = publishTime;
    }

    public Date getPublishTime() 
    {
        return publishTime;
    }
    public void setCompleteTime(Date completeTime) 
    {
        this.completeTime = completeTime;
    }

    public Date getCompleteTime() 
    {
        return completeTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("taskId", getTaskId())
            .append("taskNo", getTaskNo())
            .append("orgId", getOrgId())
            .append("categoryId", getCategoryId())
            .append("taskTitle", getTaskTitle())
            .append("taskDescription", getTaskDescription())
            .append("taskRequirements", getTaskRequirements())
            .append("location", getLocation())
            .append("latitude", getLatitude())
            .append("longitude", getLongitude())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("budgetMin", getBudgetMin())
            .append("budgetMax", getBudgetMax())
            .append("requiredSkills", getRequiredSkills())
            .append("requiredCerts", getRequiredCerts())
            .append("maxPilots", getMaxPilots())
            .append("taskImages", getTaskImages())
            .append("status", getStatus())
            .append("auditReason", getAuditReason())
            .append("auditTime", getAuditTime())
            .append("auditBy", getAuditBy())
            .append("publishTime", getPublishTime())
            .append("completeTime", getCompleteTime())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
